package com.example.e03;

import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;

public class LoginActivity extends AppCompatActivity {
    private EditText etAccount, etPassword;
    private CheckBox cbRememberPass;
    private TextView tvLoginResult;
    private SharedPreferences sp; // SharedPreferences实例
    private static final String SP_NAME = "login_info"; // 文件名
    private static final String KEY_ACCOUNT = "account";
    private static final String KEY_PASSWORD = "password";
    private static final String KEY_REMEMBER = "remember";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        // 初始化UI组件
        etAccount = findViewById(R.id.account);
        etPassword = findViewById(R.id.password);
        cbRememberPass = findViewById(R.id.remember_pass);
        tvLoginResult = findViewById(R.id.login_result);

        // 获取SharedPreferences实例（模式：私有）
        sp = getSharedPreferences(SP_NAME, MODE_PRIVATE);

        // 读取已保存的数据并填充UI（如果有）
        loadSavedData();

        // 登录按钮点击事件
        Button btnLogin = findViewById(R.id.login);
        btnLogin.setOnClickListener(v -> login());
    }

    /** 加载已保存的账号、密码和记住状态 */
    private void loadSavedData() {
        String account = sp.getString(KEY_ACCOUNT, ""); // 无数据时默认空字符串
        String password = sp.getString(KEY_PASSWORD, "");
        boolean remember = sp.getBoolean(KEY_REMEMBER, false); // 无数据时默认不记住

        etAccount.setText(account);
        etPassword.setText(password);
        cbRememberPass.setChecked(remember);
    }

    /** 登录逻辑 */
    private void login() {
        String account = etAccount.getText().toString().trim();
        String password = etPassword.getText().toString().trim();
        boolean isRemember = cbRememberPass.isChecked();

        // 验证账号密码（预设：admin/123456）
        if (account.equals("admin") && password.equals("123456")) {
            tvLoginResult.setText("登录成功！");
            // 保存数据（仅当勾选“记住密码”时）
            if (isRemember) {
                saveLoginInfo(account, password, isRemember);
            } else {
                // 不勾选时，清除已保存的数据（可选，根据需求）
                // clearLoginInfo();
            }
        } else {
            tvLoginResult.setText("账号或密码错误！");
        }
    }

    /** 保存账号密码到SharedPreferences */
    private void saveLoginInfo(String account, String password, boolean remember) {
        SharedPreferences.Editor editor = sp.edit();
        editor.putString(KEY_ACCOUNT, account);
        editor.putString(KEY_PASSWORD, password);
        editor.putBoolean(KEY_REMEMBER, remember);
        editor.apply(); // 异步提交，不阻塞UI线程
    }

    /** 清除已保存的数据（可选，用于“不记住密码”场景） */
    private void clearLoginInfo() {
        SharedPreferences.Editor editor = sp.edit();
        editor.clear(); // 清除所有数据
        // 或单独清除某个键：editor.remove(KEY_ACCOUNT);
        editor.apply();
    }
}